﻿Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient

Public Class DAOPedido

    '/////////////////////////////CARGAR GRILLA////////////////////////////////

    Public Function cargarGrillaDetallePedido(ByVal idPedido As Integer) As Data.DataTable
        Dim tabla As New Data.DataTable
        Dim con As String = ConfigurationManager.ConnectionStrings("Conex").ConnectionString
        Dim cn As New SqlConnection(con)

        Try
            Dim sql As String = "select pro.NOMBRE, d.CANTIDAD,um.NOMBRE 'UNIDAD MEDIDA', d.PRECIO,pe.ID_PEDIDO "
            sql += " from T_PEDIDOS_DETALLE d join T_PEDIDOS pe on d.ID_PEDIDO=pe.ID_PEDIDO"
            sql += " join T_PRODUCTOS pro on d.ID_PRODUCTO=pro.ID_PRODUCTO join T_UNIDADES_MEDIDA um on pro.ID_UNIDAD_MEDIDA=um.ID_UNIDAD_MEDIDA"
            sql += " where pe.ID_PEDIDO=@idPedido"

            cn.Open()
            Dim cmd As New SqlCommand()
            cmd.Parameters.AddWithValue("@idPedido", idPedido)
            cmd.Connection = cn
            cmd.CommandText = sql
            cmd.CommandType = CommandType.Text

            tabla.Load(cmd.ExecuteReader())

        Catch
        Finally
            cn.Close()
        End Try

        Return tabla
    End Function

    Public Function cargarGrillaPedido(ByVal idCliente As Integer) As Data.DataTable
        Dim tabla As New Data.DataTable
        Dim con As String = ConfigurationManager.ConnectionStrings("Conex").ConnectionString
        Dim cn As New SqlConnection(con)

        Try
            Dim sql As String = "SELECT p.ID_PEDIDO,o.NOMBRE as Obra, p.FECHA_ENTREGA"
            sql += " from T_PEDIDOS p join T_OBRAS_CLIENTE oc on p.ID_OBRA_CLIENTE=oc.ID_OBRA_CLIENTE join"
            sql += " T_OBRAS o on oc.ID_OBRA=o.ID_OBRA join T_CLIENTES c on oc.ID_CLIENTE=c.ID_CLIENTE"
            sql += " where c.ID_CLIENTE= @idCliente"

            cn.Open()
            Dim cmd As New SqlCommand()
            cmd.Parameters.AddWithValue("@idCliente", idCliente)
            cmd.Connection = cn
            cmd.CommandText = sql
            cmd.CommandType = CommandType.Text

            tabla.Load(cmd.ExecuteReader())

        Catch
        Finally
            cn.Close()
        End Try

        Return tabla
    End Function

    '////////////////////////////BUSCAR////////////////////////////

    Public Sub buscarNombreProducto(ByVal nombreProd As String, ByRef nombre As String, ByRef nomUm As String, ByRef prec As Double)
        'metodo que solo busca el nombre del cliente pasandole el idCliente
        Dim nombreCli As String = ""
        Dim nombreUM As String = ""
        Dim precio As Double = 0
        Dim tabla As New Data.DataTable
        Dim con As String = ConfigurationManager.ConnectionStrings("Conex").ConnectionString
        Dim cn As New SqlConnection(con)

        Dim sql As String = "select p.CODIGO, p.NOMBRE, um.NOMBRE 'UNIDAD MEDIDA',p.PRECIO"
        sql += " from T_PRODUCTOS p join T_UNIDADES_MEDIDA um on p.ID_UNIDAD_MEDIDA=um.ID_UNIDAD_MEDIDA"
        sql += "  where p.CODIGO= '" & nombreProd & "'"

        cn.Open()
        Dim cmd As New SqlCommand()

        cmd.Connection = cn
        cmd.CommandText = sql
        cmd.CommandType = CommandType.Text

        Dim dr As SqlDataReader = cmd.ExecuteReader()

        While dr.Read()
            nombreCli = dr("NOMBRE").ToString()
            nombreUM = dr("UNIDAD MEDIDA").ToString()
            precio = Double.Parse(dr("PRECIO").ToString())
        End While

        cn.Close()
        nombre = nombreCli
        nomUm = nombreUM
        prec = precio

    End Sub

    Public Function DAOBuscarPedidoGeneral(ByVal nroPedido As System.Nullable(Of Integer), ByVal Client As [String], ByVal dia As System.Nullable(Of DateTime), ByVal Obra As String, ByVal idEstado As System.Nullable(Of Integer)) As Data.DataTable
        Dim tabla As New Data.DataTable
        Dim con As String = ConfigurationManager.ConnectionStrings("Conex").ConnectionString
        Dim cn As New SqlConnection(con)
        Dim band As Boolean = False 'bandera para ver si la transaccion termina bien o no
        Try
            cn.Open()
            Dim sql As New SqlCommand("pedidos_BUSCAR", cn) 'primero el nombre del sp y despues la conexion
            sql.CommandType = CommandType.StoredProcedure

            If nroPedido IsNot Nothing Then
                sql.Parameters.Add("@NUMERO", SqlDbType.NChar)
                sql.Parameters("@NUMERO").Value = nroPedido
            Else
                sql.Parameters.Add("@NUMERO", SqlDbType.NChar)
                sql.Parameters("@NUMERO").Value = DBNull.Value
            End If

            If Client <> "" Then
                sql.Parameters.Add("@CLIENTE", SqlDbType.NVarChar, 50)
                sql.Parameters("@CLIENTE").Value = Client
            Else
                sql.Parameters.Add("@CLIENTE", SqlDbType.NVarChar)
                sql.Parameters("@CLIENTE").Value = DBNull.Value
            End If

            If dia IsNot Nothing Then
                sql.Parameters.Add("@FECHA_ENTREGA", SqlDbType.DateTime)
                sql.Parameters("@FECHA_ENTREGA").Value = dia
            Else
                sql.Parameters.Add("@FECHA_ENTREGA", SqlDbType.DateTime)
                sql.Parameters("@FECHA_ENTREGA").Value = DBNull.Value
            End If

            If Obra <> "" Then
                sql.Parameters.Add("@OBRA", SqlDbType.NVarChar, 50)
                sql.Parameters("@OBRA").Value = Obra
            Else
                sql.Parameters.Add("@OBRA", SqlDbType.NVarChar)
                sql.Parameters("@OBRA").Value = DBNull.Value
            End If

            If idEstado IsNot Nothing Then
                sql.Parameters.Add("@ID_ESTADO", SqlDbType.Int)
                sql.Parameters("@ID_ESTADO").Value = idEstado
            Else
                sql.Parameters.Add("@ID_ESTADO", SqlDbType.NVarChar)
                sql.Parameters("@ID_ESTADO").Value = DBNull.Value
            End If

            tabla.Load(sql.ExecuteReader())

           
        Catch e As Exception
            band = False
        Finally
            cn.Close()
        End Try
        Return tabla
    End Function

End Class

